/**
 * 配置参数
 * 如果有增加项，返回值里要增加对应项
 */
module.exports = ({
	// 输出打印设置
	getErrStr, // 函数。自定义错误信息输出。参数为错误信息字符串。如果该值存在，一定不会主动弹出错误提示
	showConsole = true, // 布尔值。是否显示输出打印
	loadingOnly = false, // 布尔值。是否只允许单请求操作。如果该值为true，则要遵循但请求操作，只要有任意请求未结束就不能进行下个请求，直接拦断
	loadingText, // 字符串。显示的loading内的提示文字。默认值为：加载中...
	mask = true, // 布尔值。是否使用透明遮罩，配置为true时不可点击页面其他内容。默认值为：true
	errType = 'toast', // 字符枚举值。错误信息展示方式，可取值：modal（弹框，默认）、toast（toast消息框）。默认值为：modal
	retry = true, // 布尔值。是否显示重试按钮。仅在type为modal时生效。用户点击重试按钮时将重新请求调用的方法，默认为false
	// 以下url请求相关
	domain, // 字符串。url请求的域名。结尾不含/。如果该值存在，优先级最高
	// 额外的请求头
	header, // 完全自定义的请求头，不做任何额外处理
	necessary, // 按照系统约定的请求头，统一转化为Cu-的格式
	isTest, // 是否测试环境，true表示一定是测试环境；false表示一定是正式环境，其它值遵循项目设定
	// 以下云服务请求相关
	type, // 数值。0：云函数云对象，固定为本地请求；1：本地请求；2：云端请求。一般get默认是1本地请求；其它默认为2云端请求；1和2不固定，可以设置
	isUrl, // 布尔值。是否来自于URL的转化。是的话，将直接回调，不做处理。目前没有实际意义
	// 以下所有请求有效
	isSystemMain, // 布尔值。是否是系统相关的主请求。如果是，页面将会根据该请求的结果进行相应展示
	isPageMain, // 布尔值。是否是页面的主请求。如果是，页面将会根据该请求的结果进行相应展示
	// 对于查询结果处理
	userKeys, // 字符串或数组。是否需要处理的用户信息字段。建议用数组，也可以用带逗号的id字符串。处理后将新增一个${key}_copy表示用户信息。也可以是对象，包含keys、field、space、name
	defuseKeys = ['HISTORY', 'remove'], // 字符串或数组。需要指定去除的信息。对于一般用户而言，这两者呈现没有意义，在获取到信息后立即去除
	// 以下缓存相关
	cache, // 数值。缓存最长时间，单位秒。该接口会多少秒内的请求直接读取缓存。防止同一个接口相同的参数下短时间内多次请求
	refresh, // 布尔值。是否刷新操作，刷新操作将不读取缓存。非get类的其它数据库操作一定为true，云函数可以自由设置
	cacheFix, // 方法。是否缓存固定，固定的将在启动时不会被清空。如果存在，将会在存储成功时执行，返回存储的key值，即md5
	reuserinfo, // 布尔值。是否刷新当前请求的用户信息。默认不刷新，就会一直读取本地的缓存信息。需要指定刷新用户信息，就会清理该数据里出现的用户信息
	// 其它设置
	timeout = 60000, // 请求超时时间。在这里目前不能控制
	complete, // 请求完成的回调。成功或者结束都执行
} = {}, mode) => {
	if (!loadingText) {
		switch (mode){
			case 'add':
				loadingText = '正在新增...'
				break
			case 'remove':
				loadingText = '正在删除...'
				break
			case 'alert':
				loadingText = '正在修改...'
				break
			case 'addAlert':
				loadingText = '正在处理中...'
				break
			case 'removeAdd':
				loadingText = '正在处理中...'
				break
			case 'get':
			case 'url':
			case 'function':
			default:
				loadingText = '正在加载中...'
				break
		}
	}
	return {
		getErrStr, showConsole, loadingOnly, loadingText, mask, errType, retry, 
		domain, header, necessary, isTest,
		type, isUrl, isSystemMain, isPageMain, 
		userKeys, defuseKeys,
		cache, refresh, cacheFix, reuserinfo,
		timeout, complete
	}
}